package ro.isdc.vms.party.domain;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/**
 * An individual person.
 * 
 * @author Andrei.Chirila
 */
public class Person extends Party {

	/**
	 * Generated Serial Version UID
	 */
	private static final long serialVersionUID = -3900775388053840551L;

	/**
	 * The person's first name.
	 */
	private String firstName;

	/**
	 * The Person's middle name.
	 */
	private String middleName;

	/**
	 * The person's surname.
	 */
	private String surname;

	/**
	 * The person's alias name.
	 */
	private String aliasName;

	/**
	 * Sex.
	 */
	private Sex sex;

	/**
	 * Title For Mr. Mrs. etc.
	 */
	private Title title;

	/**
	 * @return the firstName
	 */
	public String getFirstName() {
		return firstName;
	}

	/**
	 * @param firstName
	 *            the firstName to set
	 */
	public void setFirstName(final String firstName) {
		this.firstName = firstName;
	}

	/**
	 * @return the middleName
	 */
	public String getMiddleName() {
		return middleName;
	}

	/**
	 * @param middleName
	 *            the middleName to set
	 */
	public void setMiddleName(final String middleName) {
		this.middleName = middleName;
	}

	/**
	 * @return the surname
	 */
	public String getSurname() {
		return surname;
	}

	/**
	 * @param surname
	 *            the surname to set
	 */
	public void setSurname(final String surname) {
		this.surname = surname;
	}

	/**
	 * @return the aliasName
	 */
	public String getAliasName() {
		return aliasName;
	}

	/**
	 * @param aliasName
	 *            the aliasName to set
	 */
	public void setAliasName(final String aliasName) {
		this.aliasName = aliasName;
	}

	/**
	 * @return the sex
	 */
	public Sex getSex() {
		return sex;
	}

	/**
	 * @param sex
	 *            the sex to set
	 */
	public void setSex(final Sex sex) {
		this.sex = sex;
	}

	/**
	 * @return the title
	 */
	public Title getTitle() {
		return title;
	}

	/**
	 * @param title
	 *            the title to set
	 */
	public void setTitle(final Title title) {
		this.title = title;
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append(
				"createdBy", this.getCreatedBy()).append("middleName",
				this.middleName).append("creationTimestamp",
				this.getCreationTimestamp()).append("surname", this.surname)
				.append("electronicAddresses", this.getElectronicAddresses())
				.append("partyType", this.getPartyType()).append("entityId",
						this.getEntityId()).append("oldFlaggedTimestamp",
						this.getOldFlaggedTimestamp()).append("lastUpdatedBy",
						this.getLastUpdatedBy()).append("deletionTimestamp",
						this.getDeletionTimestamp()).append("aliasName",
						this.aliasName).append("postalAddresses",
						this.getPostalAddresses()).append("versionNo",
						this.getVersionNo()).append("vehicleSalesLicensed",
						this.isVehicleSalesLicensed()).append("title",
						this.title).append("lastUpdateTimestamp",
						this.getLastUpdateTimestamp()).append("sex", this.sex)
				.append("firstName", this.firstName).toString();
	}
	
}
